En este informe desarrollaremos los classwork correspondientes al primer corte de la materia electiva del area electronica.
Inicialmente procedemos a llamar las librerias correspondientes donde se encuentran los dataframes para consultar la informacion propuesta en el ejercicio.
Numeros del 1 al 100:
1:100
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
## [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
## [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## [91] 91 92 93 94 95 96 97 98 99 100
para imprimir los numeros del 1 al 100 debemos ubicar solo este comando y ejecutarlo y si queremos realizarlo en matriz podemos ponerlo asi:
x<-c(1:100)
print (x)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
## [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
## [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## [91] 91 92 93 94 95 96 97 98 99 100
En este punto inician los classwork: Para iniciar con el trabajo sobre los dataframes del aeropuerto, vuelos, y demas debemos llamar las librerias correspondientes:
#instalar las librerias correspondientes que contienen la informacion de los dataframes:
library(nycflights13)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
#instalar todos los paquetes con el asistente.
nycflights13_al <- nycflights13::airlines #aerolineas
nycflights13_ap <- nycflights13::airports #aeropuertos
nycflights13_vu <- nycflights13::flights #vuelos
nycflights13_av <- nycflights13::planes #aviones
nycflights13_cl <- nycflights13::weather #clima
colnames(nycflights13_vu)
## [1] "year" "month" "day" "dep_time"
## [5] "sched_dep_time" "dep_delay" "arr_time" "sched_arr_time"
## [9] "arr_delay" "carrier" "flight" "tailnum"
## [13] "origin" "dest" "air_time" "distance"
## [17] "hour" "minute" "time_hour"
Se asignan toods los dataframes que componen la libreria, aunque particularmente trabajaremos dos o tres de ellos, aun asi contaremos con toda la informacion en nuestros dataframes locales al realizar esta operacion
Para el primer ejercicio nos solicita encontrar los aviones que:
Tuvo un retraso de llegada de dos o más horas.
#Ejercicio 5.2.4
'5.2.4-1.1'<-filter (nycflights13_vu, arr_delay > '2' )
Voló a Houston ( IAHo HOU)
'5.2.4-1.2'<-filter (nycflights13_vu, dest == "IAH"| dest =="HOU")
Fueron operados por United, American o Delta
'5.2.4-1.3'<-filter (nycflights13_vu, carrier == "AA"| dest =="UA" | dest =="DL") #primero se consulta la tabla de aerolineas para sacar las siglas de aerolinea
Salida en verano (julio, agosto y septiembre)
'5.2.4-1.4'<-filter (nycflights13_vu, month==7| month==8 | month==9)
Llegó más de dos horas tarde, pero no se fue tarde
'5.2.4-1.5'<-filter (nycflights13_vu, arr_delay > 2 & dep_delay <= 0)
Se retrasaron al menos una hora, pero recuperaron más de 30 minutos en vuelo
'5.2.4-1.6'<-filter (nycflights13_vu, dep_delay >= 1 & arr_delay <= 0.5)
Salida entre la medianoche y las 6 a. m. (incluidas)
'5.2.4-1.7'<-filter (nycflights13_vu, dep_time <= 600)
para esta primera parte realizamos el uso de filters con rangos asinados a traves de igualacion o mayor que, pero que sucederia si implementaramos los mismo codigos con un filtro entre rangos:
#con operador between
filter (nycflights13_vu,between( arr_delay , '2' ,'200'))## para vuelos retrasados entre 2 y 200 hrs
filter (nycflights13_vu,between(dest , "IAH" , "HOU" ))# en este caso por el tipo de dato arrojara un error de coercion
## Warning in between(dest, "IAH", "HOU"): NAs introducidos por coerción
## Warning in between(dest, "IAH", "HOU"): NAs introducidos por coerción
## Warning in between(dest, "IAH", "HOU"): NAs introducidos por coerción
#filter (nycflights13_vu,between(carrier , "AA","UA","DL"))# al trabajar con cadenas de caracteres se presenta el inconveniente de normalización
filter (nycflights13_vu,between(month,7,9))#para el tema de meses años o dias, es perfecto el uso por que between representa un rango
filter (nycflights13_vu,between(arr_delay, '2','200') & dep_delay<='0')#podemos usarlo como combinacion entre un valor exacto o con parametros y una comparacion con rangos
filter (nycflights13_vu, between( dep_delay, '1','100') & between (arr_delay,0, 0.5)) # mismas combinaciones para rangos de enteros
filter (nycflights13_vu,between( dep_time , '0' , '600'))#podemos asumir que las 12 de la media noche son 00:00 y al ser enteros lo manejamos como 0
Realizamos las mismas consultas con la funcion filter, pero anidamos la funcion between, nos percatamos que unicamente funcionan los rangos para los numeros, en cuanto a caracteres o letras between no es el filtro correcto para dichas sentencias.
#5.3.1
llamamos nuevamente la lista donde se encuentran los dataframes y tydiverse para realizar nuestras consultas.
library(nycflights13)
library(tidyverse)
Debemos entender que informacion tiene el dataframe, para asi mismo saber por que columnas y filas organizar, por ende implementamos la funcion de colnames, para saber el orden del dataframe.
colnames(nycflights13_vu)
## [1] "year" "month" "day" "dep_time"
## [5] "sched_dep_time" "dep_delay" "arr_time" "sched_arr_time"
## [9] "arr_delay" "carrier" "flight" "tailnum"
## [13] "origin" "dest" "air_time" "distance"
## [17] "hour" "minute" "time_hour"
Esta sentencia nos entrega los encabezados de el dataframe
5.3.1 Ejercicios ¿Cómo podría utilizar arrange()para ordenar todos los valores que faltan al principio? (Sugerencia: use is.na()).
'5.3.1.1'<- nycflights13_vu%>%
arrange(desc(is.na(dep_time))) # en esta ocasion se organiza por tiempos de salida en NA
Ordenar flightspara encontrar los vuelos más retrasados. Encuentra los vuelos que salieron antes.
'5.3.1.2'<- nycflights13_vu%>%
arrange (dep_delay)#
implementamos el la funcion para ver que vuelos salieron mas horas de antelacion, y al final encontraremos los retrasados, a partir del retraso en las llegadas
Ordenar flightspara encontrar los vuelos más rápidos (velocidad más alta).
'5.3.1.3'<- nycflights13_vu%>% #nos organiza en la parte superior los mas veloces, y al final los menos
arrange (air_time*distance)
¿Qué vuelos viajaron más lejos? ¿Cuál viajó menos?
'5.3.1.4'<- nycflights13_vu%>%#¿Qué vuelos viajaron más lejos? ¿Cuál viajó menos?
arrange ((distance/air_time)*60)
'5.3.1.4-2 menos' <- nycflights13_vu%>%
group_by(distance)%>%
transmute(carrier,flight,tailnum,velocidad_promedio = (distance/air_time)*60)%>%
ungroup()
Aqui implementamos una funcion especial, para poder determinar la velocidad promedio y no solo asumir que por distancia y tiempo podiamos guiarnos, por ende implementamos transmute.
¿Qué sucede si incluye el nombre de una variable varias veces en una select()llamada?#5.4.1.3 #¿Qué hace la any_of()función? ¿Por qué podría ser útil junto con este vector?
#vars <- c("year", "month", "day", "dep_delay", "arr_delay")%>%
#SELECT ("dep_delay",any_of(dep_delay='na'))
lo que hace es coincidencias, y le dice a motor que coincida una o varias veces con cualquiera_de y se especifica el valor que se requiere o el caracter entre comillas.
#5.4.1.4#¿Te sorprende el resultado de ejecutar el siguiente código? ¿Cómo tratan los ayudantes selectos el caso de forma predeterminada? ¿Cómo se puede cambiar ese valor predeterminado?
select(flights, contains("TIME"))# en realidad lo que hace es generar un filtro en las columnas que tienen la palabra time como palabra clave
select(flights, contains("dep"))#en este caso se usa el filtro para buscar la palabra dep en los encabezados de columnas
en realidad solo trae una unica fila a pesar de ser llamada 3 veces
#'5.4.1.2'<- nycflights13_vu%>%
#select(carrier,carrier,carrier,flight,tailnum)%>%
#arrange(carrier)
Aqui implementamos funciones adiciona
Ejercicios 5.5.2
Actualmente dep_time y sched_dep_time son convenientes a la vista, pero difíciles de calcular porque en realidad no son números continuos. Conviértalos a una representación más conveniente de la cantidad de minutos desde la medianoche.
'5.5.2.1' <- nycflights13_vu%>%
transmute(dep_time,sched_dep_time,dep_horas =(dep_time %/% 100), dep_minutos = (dep_time %% 100 ),sched_horas=(sched_dep_time%/% 100),sched_minutos = (sched_dep_time %% 100 ))
Comparar air_timecon arr_time - dep_time. Que esperas ver? ¿Que ves? ¿Qué necesitas hacer para arreglarlo?
'5.5.2.2' <- nycflights13_vu%>%
select(air_time,arr_time,dep_time)%>%
group_by(arr_time)
en primera medida se ve que el air time esta en minutos, debo convertirlo a horas.
procuro dejar todo en horas para que sea mas facil la lectura y el calculo correspondiente
#transmute(hora_llegada=(arr_time/100),hora_salida=(dep_time/100),tiempo_vuelo_horas=(air_time/60),arr_time)%>%
#ungroup%>%
#arrange(arr_time)
Ejercicios 5.6.7
Haga una lluvia de ideas sobre al menos 5 formas diferentes de evaluar las características típicas de retraso de un grupo de vuelos. Considere los siguientes escenarios:
#Un vuelo llega 15 minutos antes el 50% del tiempo y 15 minutos tarde el 50% del tiempo
not_cancelled %>%
group_by(year, month, day) %>%
summarise(n_early = sum(dep_time)+Tiempo_adicional)
teniendo en cuenta que la hora de llegada de los vuelos sera aumentada y disminuida en todos los casos implementamos una resta y suma segun corresponda de 15 minutos.
#Tiempo_adicional<-15
#not_cancelled %>%
# group_by(year, month, day) %>%
# summarise(n_early = sum(dep_time)-Tiempo_adicional)
Un vuelo siempre llega 10 minutos tarde.
#'10_TARDE'<-not_cancelled %>%
# group_by(year, month, day)%>%
#transmute(flight,tailnum,origin,dest,sched_arr_time,hora_con_retraso=(sched_arr_time + 10))%>%
#ungroup
Siempre habra un retraso de 10 minutos entonces incrementamos el tiempo de llegada estimado, con eso ya sabemos que estara retrasado con respecto a la hora dispuesta.
Un vuelo llega 30 minutos antes el 50% del tiempo y 30 minutos tarde el 50% del tiempo.
#'30_mminutos'<-not_cancelled %>%
# group_by(year, month, day)%>%
# transmute(flight,tailnum,origin,dest,sched_arr_time,hora_adelanto=sched_arr_time-30,hora_atraso=sched_arr_time+30)%>%
# transmute(Tiempo_desviacion=(mean(hora_atraso-hora_adelanto)))%>%
# ungroup
implementamos una funcion donde se contemplen las dos llegadas, una con retraso, y la otra con adelanto con respecto al tiempo estimado, asumiendo que es el tiempo idoneo de llegada.
ejercicios 5.7.1
Vuelva a consultar las listas de funciones útiles de mutación y filtrado. Describe cómo cambia cada operación cuando la combinas con la agrupación.
#5.7.1 Vuelva a consultar las listas de funciones útiles de mutación y filtrado. Describe cómo cambia cada operación cuando la combinas con la agrupación.
avion_retraso <- nycflights13_vu%>%
arrange (flights,desc(dep_delay))%>%
group_by(tailnum)
Lo que hacemos es organizar el dep_delay(retraso en salidas) que equivale a el retraso con respecto a la salida estimada, y la hora de salida y luego agrupamos por el numero en la cola del avion, aqui lo que realiza es un ordenamiento a traves de los numeros de la cola del avion permitiendonos tener un consolidado de informacion sobre los mismos.
La documentación tanto para el taller como el material academico del cual fuimos apoyados fue tomado de: